# 字典

# 字典定义
alien_0 = {}

alien_0['color'] = 'red'
print(alien_0['color'])

# 字典修改
alien_0 = {'color': 'green', 'points': 5}
alien_0['color'] = 'red'
print(alien_0)

# 字典删除

del alien_0['color']
print(alien_0)


# 练习 6.1：⼈ 使⽤⼀个字典来存储⼀个⼈的信息，包括名、姓、年龄
# 和居住的城市。该字典应包含键 first_name、last_name、age 和
# city。将存储在该字典中的每项信息都打印出来。
print('练习 6.1')
person = {'first_name': 'tony', 'last_name': 'stack', 'age': '36', 'city': 'new york'}
print(person['first_name'])
print(person['last_name'])
print(person['age'])
print(person['city'])


# 练习 6.2：喜欢的数 1 使⽤⼀个字典来存储⼀些⼈喜欢的数。请想出
# 5 个⼈的名字，并将这些名字⽤作字典中的键。再想出每个⼈喜欢的⼀
# 个数，并将这些数作为值存储在字典中。打印每个⼈的名字和喜欢的
# 数。为了让这个程序更有趣，通过询问朋友确保数据是真实的。

print('练习 6.1')
favorite_numbers = {'tony': '36', 'jack': '18', 'lucas': '29', 'lily': '20', 'mike': '30'}
print(f"tony favorite number is {favorite_numbers['tony']}")
print(f"jack favorite number is {favorite_numbers['jack']}")
print(f"lucas favorite number is {favorite_numbers['lucas']}")
print(f"lily favorite number is {favorite_numbers['lily']}")
print(f"mike favorite number is {favorite_numbers['mike']}")


# 练习 6.3：词汇表 1 Python 字典可⽤于模拟现实⽣活中的字典。为避
# 免混淆，我们将后者称为词汇表。
# 想出你在前⾯学过的 5 个编程术语，将它们⽤作词汇表中的键，
# 并将它们的含义作为值存储在词汇表中。
# 以整洁的⽅式打印每个术语及其含义。为此，既可以先打印术
# 语，在它后⾯加上⼀个冒号，再打印其含义；也可以先在⼀⾏⾥
# 打印术语，再使⽤换⾏符（\n）插⼊⼀个空⾏，然后在下⼀⾏⾥
# 以缩进的⽅式打印其含义。
print('练习 6.3')
vocabulary = {'Python': '一种流行的编程语言', 'Java': '一种广泛使用的编程语言', 'C++': '一种高性能的编程语言', 'JavaScript': '一种前端脚本语言', 'SQL': '一种用于管理关系数据库的语言'}
print(f"Python: \n\t{vocabulary['Python']}")
print(f"Java: \n\t{vocabulary['Java']}")
print(f"C++: \n\t{vocabulary['C++']}")
print(f"JavaScript: \n\t{vocabulary['JavaScript']}")
print(f"SQL: \n\t{vocabulary['SQL']}")


print(vocabulary.keys())
print(vocabulary.values())



# 练习 6.4：词汇表 2 现在你知道了如何遍历字典，请整理你为练习 6.3
# 编写的代码，将其中的⼀系列函数调⽤ print() 替换为⼀个遍历字典
# 中键和值的循环。确保该循环正确⽆误后，再在词汇表中添加 5 个
# Python 术语。当你再次运⾏这个程序时，这些新术语及其含义将⾃动
# 包含在输出中。
print('练习 6.4')
vocabulary = {'Python': '一种流行的编程语言', 'Java': '一种广泛使用的编程语言', 'C++': '一种高性能的编程语言'}
for key, value in vocabulary.items():
    print(f"{key}: {value}")


vocabulary['JavaScript'] = '一种前端脚本语言'
vocabulary['SQL'] = '一种用于管理关系数据库的语言'
for key, value in vocabulary.items():
    print(f"{key}: {value}")


# 练习 6.5：河流 创建⼀个字典，在其中存储三条河流及其流经的国
# 家。例如，⼀个键值对可能是 'nile': 'egypt'。
# 使⽤循环为每条河流打印⼀条消息，如下所⽰。
# The Nile runs through Egypt.
# 使⽤循环将该字典中每条河流的名字打印出来。
# 使⽤循环将该字典包含的每个国家的名字打印出来。
print('练习 6.5')
rivers = {'nile': 'egypt', 'amazon': 'brazil', 'yangtze': 'china'}
for key, value in rivers.items():
    print(f"The {key.title()} runs through {value.title()}.")


# 练习 6.6：调查 在 6.3.1 节编写的程序 favorite_languages.py 中执⾏以
# 下操作。
# 创建⼀个应该会接受调查的⼈的名单，其中有些⼈已在字典中，
# ⽽其他⼈不在字典中。
# 遍历这个名单。对于已参与调查的⼈，打印⼀条消息表⽰感谢；
# 对于还未参与调查的⼈，打印⼀条邀请参加调查的消息。

print('练习 6.6')

favorite_languages = {
 'jen': 'python',
 'sarah': 'c',
 'edward': 'rust',
 'phil': 'python',
 }

persons = ['jen', 'sarah', 'tony']

for person in persons:
    if person in favorite_languages.keys():
        print(f"Thank you for taking the poll, {person}!")
    else:
        print(f"Please take the poll, {person}!")